Skip to content

docs(skills): add night-ops-directive and coderabbit-pr-gate agent skills - #22

Merged
trillium merged 2 commits into
mainfrom
fm/nightops-skills-salvage-salvage-pr-5-content-and-reship-via-no-m-a4
Aug 1, 2026
Merged

docs(skills): add night-ops-directive and coderabbit-pr-gate agent skills#22
trillium merged 2 commits into
mainfrom
fm/nightops-skills-salvage-salvage-pr-5-content-and-reship-via-no-m-a4

Conversation

@trillium

@trillium trillium commented Aug 1, 2026

Copy link
Copy Markdown
Owner

Intent

Salvage the valuable content from stale/broken PR #5 (which bypassed no-mistakes and had failing checks) and reship it clean through no-mistakes. Recover from PR #5's branch: a new agent-only skill night-ops-directive (standing autonomous-dispatch directive covering delegator discipline during unattended work, firstmate's own watcher-heartbeat wake cadence since ScheduleWakeup/CronCreate are blocked for the primary session, human-only task triage via bd transfer, and a pointer to fork-first pushes), a new agent-only skill coderabbit-pr-gate (CodeRabbit-clean-plus-green merge gating: react to actionable review comments beyond bare pass/fail, treat rate limits as a paused external wait not a failure), and an AGENTS.md clarification that the qualifying test for a routine yolo-covered gate, including a PR merge, is reversibility. Both new skills carry metadata.internal=true like other .agents/skills/ entries, matching existing skill conventions (frontmatter, one-sentence-per-line prose). Do NOT reopen or reuse PR #5 itself; this is a clean new branch. Redo the changes cleanly rather than copying PR #5's diff verbatim: fix whatever caused PR #5's failing checks (lint, non-no-mistakes PR raise, portable serial behavior). Before writing, this task cross-checked against work already landed the same day: fork-first-brief-08 (fm-brief.sh already auto-injects a fork-first push rule into every push-mode ship brief, documented in AGENTS.md section 11) already fully covers PR #5's general fork-first-push AGENTS.md line, so that line was intentionally dropped (not carried over) to avoid duplicating it. PR #16 (pr-review-comment-wake) only added the wake mechanism for a new bot PR review comment (state/.pr-review-seen); it added no reaction policy, so coderabbit-pr-gate was kept as a complementary policy layer, not a duplicate, and now cross-references that wake mechanism instead of re-describing it. This task's diff is scoped to AGENTS.md and the two new .agents/skills/ directories only; no other files should change.

What Changed

  • Added .agents/skills/night-ops-directive/SKILL.md, a standing autonomous-dispatch directive covering delegator discipline during unattended work, the primary session's watcher-heartbeat wake cadence (since ScheduleWakeup/CronCreate are blocked for it), human-only task triage via bd transfer, and a pointer to fork-first pushes.
  • Added .agents/skills/coderabbit-pr-gate/SKILL.md, a CodeRabbit-clean-plus-green merge gating policy: react to actionable review comments beyond a bare pass/fail signal, and treat CodeRabbit rate limits as a paused external wait rather than a failure.
  • Updated AGENTS.md to clarify that the qualifying test for a routine yolo-covered gate, including a PR merge, is reversibility.
  • Registered both new SKILL.md files in docs/documentation-audiences.json so the tracked-documentation audience inventory stays in sync.

Risk Assessment

✅ Low: Purely additive change (two new agent-only skill docs plus a one-clause AGENTS.md clarification) confined to documentation/policy text; verified factual claims (script names, heartbeat backoff behavior, PreToolUse blocking of ScheduleWakeup/CronCreate, pr-review-seen wake mechanism) against the actual scripts and AGENTS.md, and diff scope matches the stated intent exactly with no unrelated files touched.

Testing

Captain, the documentation-audiences fix from round 1 already landed and the whole change checks out: the structural inventory test suite and the direct audience-check script both pass clean against the real repo tree, both new agent-only skills exist with correct frontmatter and content matching the salvaged PR #5 intent, every mechanism they reference (watcher heartbeat vars, pr-review-seen wake, bd transfer) is real, and the diff stays scoped to AGENTS.md plus the two new skill directories plus the required inventory registration — no other files touched, working tree clean.

Evidence: Documentation-audiences structural test suite
ok - documentation inventory classifies every maintained prose surface exactly once
ok - classification, setup routing, and maintained-prose scope fail safely
ok - required documentation owner pointers cannot silently disappear
ok - local links resolve while dates, versions, commands, and incident prose remain semantically reviewed
Evidence: Direct documentation-audience inventory check against real repo tree
fm-doc-audience-check: ok surfaces=63 local_links=168
- Outcome: 🔧 1 issue found → auto-fixed ✅ across 2 runs (6m53s)

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

✅ **Review** - passed

✅ No issues found.

🔧 **Test** - 1 issue found → auto-fixed ✅
  • 🚨 docs/documentation-audiences.json - The two new SKILL.md files were not added to docs/documentation-audiences.json, so the repo's tracked-documentation audience inventory check fails with 'unclassified: .agents/skills/coderabbit-pr-gate/SKILL.md, .agents/skills/night-ops-directive/SKILL.md'. Every other .agents/skills/*/SKILL.md file (afk, ask-user-authority, bearings, etc.) has a corresponding {"path": "...", "audience": "agent-runtime"} entry in docs/documentation-audiences.json's surfaces list; this change needs the same two entries added for the new skills to keep the inventory in sync. Confirmed this is a regression introduced by this change (not pre-existing): the same test passes cleanly on the base commit and fails only after the two new SKILL.md files are added.
  • bash tests/fm-documentation-audiences.test.sh on target commit 5a83257 (fails: unclassified skill files)
  • bash bin/fm-doc-audience-check.sh on target commit 5a83257 (fails directly)
  • bash tests/fm-documentation-audiences.test.sh on base commit 1350b110 via isolated worktree (passes cleanly), confirming the failure is a regression introduced by this change
  • manual diff review confirming the change is scoped to exactly AGENTS.md, .agents/skills/coderabbit-pr-gate/SKILL.md, and .agents/skills/night-ops-directive/SKILL.md as the intent describes
  • manual review of the two new SKILL.md frontmatter blocks against sibling agent-only skills (metadata.internal=true, user-invocable: false) for convention match

🔧 Fix: Register two new SKILL.md files in documentation-audiences.json
✅ Re-checked - no issues remain.

  • bash tests/fm-documentation-audiences.test.sh — structural regression suite for the tracked documentation audience inventory, all 4 checks pass
  • bash bin/fm-doc-audience-check.sh --root . — direct inventory check against the real repo tree, confirms both new SKILL.md files are classified (63 surfaces, 168 local links, ok)
  • Manual read of both new SKILL.md files for frontmatter convention (name/description/user-invocable/metadata.internal) matching existing skills (ask-user-authority, bootstrap-diagnostics)
  • Manual content review of night-ops-directive and coderabbit-pr-gate against the described user intent (delegator discipline, watcher-heartbeat wake cadence, bd transfer triage, fork-first pointer, CodeRabbit actionable-comment policy and rate-limit-as-paused-wait)
  • git diff 1350b110 ff9a39c --stat and AGENTS.md diff — confirmed change is scoped to AGENTS.md, the two skill directories, and docs/documentation-audiences.json only
  • Cross-referenced mechanisms cited in the new skills (bin/fm-subagent-pretool-check.sh, bin/fm-watch.sh FM_HEARTBEAT/FM_HEARTBEAT_MAX, state/<id>.pr-review-seen in AGENTS.md) against the actual repo to confirm they exist and are accurately described
  • git status --porcelain — confirmed no transient artifacts left in the worktree
✅ **Document** - passed

✅ No issues found.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

Salvage the still-relevant content from stale/broken PR #5, reshipped
clean through no-mistakes rather than reopening it.

Carried forward:
- night-ops-directive: standing autonomous-dispatch directive (delegator
  discipline during unattended work, the watcher-heartbeat wake cadence
  since ScheduleWakeup/CronCreate are blocked for the primary session,
  human-only task triage via bd transfer).
- coderabbit-pr-gate: CodeRabbit-clean-plus-green merge gating (react to
  actionable review comments beyond bare pass/fail, treat rate limits as
  a paused external wait).
- AGENTS.md yolo reversibility clarification: the qualifying test for a
  routine yolo-covered gate, including a PR merge, is reversibility.

Dropped as already covered by work landed the same day:
- PR #5's general fork-first-push line in AGENTS.md section 7 is dropped;
  fork-first-brief-08 already implemented and documented (section 11) an
  automatic fork-first push rule injected into every push-mode ship brief
  via fm-brief.sh, which fully covers this case.
- coderabbit-pr-gate is kept, not dropped, despite PR #16 (pr-review-
  comment-wake) landing the same day: PR #16 only added the wake
  mechanism (state/<id>.pr-review-seen) for a new bot review comment.
  It added no reaction policy, so coderabbit-pr-gate is complementary,
  not duplicative; the skill now cross-references that wake mechanism
  instead of re-describing it.
@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@trillium, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 22 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 3e1eee9a-948d-433c-b5cc-7b1ce53a406e

📥 Commits

Reviewing files that changed from the base of the PR and between 1350b11 and ff9a39c.

📒 Files selected for processing (4)
  • .agents/skills/coderabbit-pr-gate/SKILL.md
  • .agents/skills/night-ops-directive/SKILL.md
  • AGENTS.md
  • docs/documentation-audiences.json

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@trillium
trillium merged commit 9faac38 into main Aug 1, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant